package com.skivingcloud.report.service;

import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.skivingcloud.report.dto.DataSetParamDto;
import com.skivingcloud.report.entity.ReportDataSetParam;
import com.skivingcloud.common.utils.PageParameter;

import java.util.List;
import java.util.Map;

/**
 * 数据集查询参数 服务层。
 *
 * @author skivingcloud
 * @since 2024-09-12
 */
public interface ReportDataSetParamService extends IService<ReportDataSetParam> {
    /**
     * 分页查询数据集查询参数
     *
     * @param parameter 查询参数
     * @return 分页查询结果
     */
    Page<ReportDataSetParam> queryByPage(PageParameter<ReportDataSetParam> parameter);

    /**
     * 参数校验  js脚本
     * @param dataSetParamDto 参数
     * @return 校验结果
     */
    Object verification(DataSetParamDto dataSetParamDto);

    /**
     * 参数校验  js脚本
     *
     * @param dataSetParamDtoList 参数
     * @param contextData 参数
     * @return 校验结果
     */
    boolean verification(List<DataSetParamDto> dataSetParamDtoList, Map<String, Object> contextData);

    /**
     * 参数替换
     *
     * @param contextData 参数
     * @param dynSentence 查询
     * @return 替换后结果
     */
    String transform(Map<String, Object> contextData, String dynSentence);

    /**
     * 参数替换
     * @param dataSetParamDtoList 参数
     * @param dynSentence 查询
     * @return 结果
     */
    String transform(List<DataSetParamDto> dataSetParamDtoList, String dynSentence);
}
